import 'package:flutter_base/bean/login/user_info_entity.dart';
import 'package:flutter_base/common/sp_key.dart';

import '../utils/sp_utils.dart';

///
/// @DIR_PATH：lib/common
/// @TIME：2023/11/10 16:21
/// @AUTHOR：starr
/// 用户信息操作类
class UserHelper {
  // 私有构造函数
  UserHelper._() {
    // 具体初始化代码
  }

  ///获取单例对象
  static UserHelper getInstance = UserHelper._();

  //用户基本信息模型
  UserInfoEntity? _userBean;

  //获取 UserBean
  UserInfoEntity? get userBean => _userBean;

  //userBean的设置方法
  set userBean(UserInfoEntity? bean) {
    _userBean = bean;
    //缓存用户信息
    SPUtils.saveObject(spUserBeanKey, bean);
  }

  ///判断用户是否登录的便捷方法
  bool get userIsLogin => userBean == null ? false : true;

  ///是否同同意隐私与用户协议
  bool? _userProtocol = false;

  bool? get userProtocol => _userProtocol;

  set userProtocol(bool? flag) {
    _userProtocol = flag;

    //保存同意的标识
    SPUtils.save(spUserProtocolKey, flag);
  }

  //判断用户是否同意用户协议便捷方法
  bool? get isUserProtocol => _userProtocol ?? false;

  ///用来初始化用户信息的缓存数据
  Future<bool> init() async {
    ///加载缓存数据
    Map<String, dynamic> map = await SPUtils.getObject(spUserBeanKey);

    ///解析缓存数据
    _userBean = UserInfoEntity.fromJson(map);
    return Future.value(true);
  }

  //退出登录 清除数据
  void exitLogin() {
    _userBean = null;
    SPUtils.remove(spUserBeanKey);
  }

  //保存用户cookie
  List<String?> cookieList = [];
}
